package com.fowo.api.model.supplier.flow.node;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 供应商流程节点 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class SupplierFlowNodeImportPo {

  /** 流程编码 */
  @ExcelProperty("流程编码")
  @Size(max = 128, message = "流程编码长度不能超过128")
  private String enCode;

  /** 节点类型 */
  @ExcelProperty("*节点类型")
  @NotBlank(message = "节点类型不能为空")
  private String type;

  /** 当前节点 */
  @ExcelProperty("*当前节点")
  @NotBlank(message = "当前节点不能为空")
  private String nodeUp;

  /** 目标节点 */
  @ExcelProperty("*目标节点")
  @NotBlank(message = "目标节点不能为空")
  private String node;

  /** 异常节点 */
  @ExcelProperty("*异常节点")
  @NotBlank(message = "异常节点不能为空")
  private String nodeExceptionStatus;

  /** 异常下游节点 */
  @ExcelProperty("*异常下游节点")
  @NotBlank(message = "异常下游节点不能为空")
  private String nodeDownExceptionStatus;

  /** 任务拾取人 */
  @ExcelProperty("任务拾取人")
  private String toUserField;

  /** 任务待转发人 */
  @ExcelProperty("任务待转发人")
  private String forwardUserField;

  /** 候选人 */
  @ExcelProperty("候选人")
  @Size(max = 50, message = "候选人长度不能超过50")
  private String nodeDoUserName;

  @ExcelIgnore
  @Schema(title = "候选人")
  private String nodeDoUser;

  /** 候选角色 */
  @ExcelProperty("候选角色")
  @Size(max = 50, message = "候选角色长度不能超过50")
  private String nodeDoRoleRoleName;

  @ExcelIgnore
  @Schema(title = "候选角色")
  private String nodeDoRole;

  /** 候选组织(备用) */
  @ExcelProperty("候选组织(备用)")
  @Size(max = 50, message = "候选组织(备用)长度不能超过50")
  private String nodeDoDepartmentName;

  @ExcelIgnore
  @Schema(title = "候选组织(备用)")
  private String nodeDoDepartment;

  /** 顺序 */
  @ExcelProperty("*顺序")
  @NotBlank(message = "顺序不能为空")
  @IntegerString(
    message = "顺序数值格式不正确",
    label = "顺序",
    min = 1,
    max = 100
  )
  private String nodeSort;
}
